home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 June / EnigmA AMIGA RUN 08 (1996)(G.R. Edizioni)(IT)[!][issue 1996-06][EARSAN CD VII].iso / earcd / comm2 / mmllfx80.lha / REXX / MM_ALLFIX.rexx
OS/2 REXX Batch file  |  1996-04-25  |  4KB  |  39 lines

  1. /*
  2. ** $VER: MM_AllFix 0.80 (18.04.96)
  3. **
  4. ** Written by Paolo Carotenuto
  5. **
  6. */
  7.  
  8. DROP MM. ; ADDRESS 'MAILMANAGER'
  9.  
  10. /* ---------------------------------------------------------------------- */
  11.  
  12. MM.PathCfg   = 'MM:Config/' ; MM.LogLevel  = 2 ; MM.PrgName   = 'MM_AllFix v0.80' ; MM.Copyright = '(C) 1994-96 by Paolo Carotenuto'
  13.  
  14. /* ---------------------------------------------------------------------- */
  15.  
  16. CALL ReadConfig() ; MM.TempFile  = 'T:MM_AllFix.temp' ; MM.Delete    = 'C:DELETE >nil:' ; MM.Search    = 'C:search' MM.Files 'NONUM PATTERN >>'MM.TempFile ; MM.Status    = FALSE
  17.  
  18. /* ---------------------------------------------------------------------- */
  19.  
  20. CALL WriteLog(MM.PrgName' - Started') ; DO i=0 FOR MM.TagName.Count ; PARSE VAR MM.TagName.i MM.FromArea MM.ToArea ; DO t=0 FOR MM.Alias.Count ; DROP Messages. ; MM_GetAreaInfo MM.FromArea Info
  21.    IF UPPER(Info.Type) = 'MAIL' THEN DO ; MM_SearchMsgs MM.FromArea Messages '#?' MM.Alias.t '#?' IMP !INTR !SENT ; END ; ELSE MM_SearchMsgs MM.FromArea Messages '#?' MM.Alias.t '#?' IMP !SENT ; IF Rc = 0 THEN DO ; CALL WriteLog('.') ; CALL WriteLog('Found' Messages.Count 'unprocessed request in area 'MM.FromArea) ; DO n = 0 FOR Messages.Count ; MM_ReadMsg MM.FromArea Messages.n Msg ; IF Rc = 0 THEN DO ; CALL WriteLog('.') ; CALL WriteLog('Processing Message #'Messages.n) ; CALL WriteLog('From: 'Msg.From) ; CALL WriteLog('  To: 'Msg.To  ) ; CALL WriteLog(' Req: 'Msg.Subj) ; MM.To     = Msg.From ; MM.ToAddr = Msg.FromAddr ; MM.Subj   = Msg.Subj ; MM.Area   = MM.ToArea ; CALL ProcessRequest(MM.Subj) ; END ; END ; END ; END ; END ; DO i=0 FOR MM.TagName.Count ;  PARSE VAR MM.TagName.i MM.FromArea MM.ToArea ; MM_GetAreaInfo MM.ToArea Info ; IF Info.Type ~= 'MAIL' THEN MM_Export MM.ToArea ; END ; CALL writelog(mm.prgName' - Ended') ; EXIT
  22.  
  23. /* ---------------------------------------------------------------------- */
  24.  
  25. ProcessRequest: PROCEDURE EXPOSE MM. ; PARSE ARG MM.Find ; MM_WriteStem MM.TempFile MM.Banner ; MM.Find       = TRANSLATE(MM.Find,' ','/') ; MM.Find.Count = WORDS(MM.Find) ; DO y=1 TO MM.Find.Count ; ADDRESS COMMAND MM.Search WORD(MM.Find,y) ; IF Rc = 0 THEN DO ; MM.Status = TRUE ; END ; END ; IF MM.Status = TRUE THEN DO ; DROP Reply. ; CALL WriteLog('Stat: ** Found And Reply') ; CALL ReplyMsg() ; END ; ELSE CALL WriteLog('Stat: ** Not Found') ; RETURN
  26.  
  27. /* ---------------------------------------------------------------------- */
  28.  
  29. ReplyMsg: PROCEDURE EXPOSE MM. ; MM.Status    = FALSE ; Reply.From   = MM.PrgName ; Reply.To     = MM.To ; Reply.ToAddr = MM.ToAddr ; Reply.Subj   = 'Report about your request:' MM.Subj ; Reply.File   = MM.TempFile ; Reply.Tear   = MM.PrgName ; MM_WriteMsg MM.Area Reply ; RETURN
  30.  
  31. /* ---------------------------------------------------------------------- */
  32.  
  33. ReadConfig: PROCEDURE EXPOSE MM. ; MM.Banner.count  = 0 ; MM.TagName.count = 0 ; MM.Alias.count   = 0 ; MM_ReadStem MM.PathCfg||'MM_AllFix.Cfg' Config ; IF Rc ~= 0 THEN DO ; SAY '*** Error: Can not open config "'MM.PathCfg'/MM_AllFix.cfg"' ; EXIT 10 ; END ; DO l = 0 FOR Config.Count ; IF (LEFT(Config.l,1) ~= ';') & Config.l ~= '' THEN DO ; PARSE VAR Config.l Keyword Dato ; SELECT ; WHEN UPPER(Keyword) = '#FILES'   THEN MM.Files   = STRIP(Dato) ; WHEN UPPER(Keyword) = '#ALIAS'   THEN MM_AddToStem MM.Alias   'Dato' ; WHEN UPPER(Keyword) = '#TAGNAME' THEN MM_AddToStem MM.TagName 'Dato' ;  WHEN UPPER(Keyword) = '#BANNER'  THEN MM_AddToStem MM.Banner  'Dato' ; OTHERWISE ; END ; END ; END ; MM_GetSysOp 'MM.SysOp' ; RETURN
  34.  
  35. /* ---------------------------------------------------------------------- */
  36.  
  37. WriteLog: PROCEDURE EXPOSE MM. ; PARSE ARG Testo ; MM_WriteLog 'Testo' MM.LogLevel ; RETURN
  38.  
  39.